using ChatBackend.DTOs;
using ChatBackend.Models;

namespace ChatBackend.Services
{
    public interface IAuthService
    {
        Task<AuthResponseDto> RegisterAsync(RegisterDto registerDto);
        Task<AuthResponseDto> LoginAsync(LoginDto loginDto);
        Task<UserDto?> GetUserByIdAsync(int userId);
        Task<UserDto> UpdateUserAsync(int userId, UserDto userDto);
        Task<bool> ChangePasswordAsync(int userId, string currentPassword, string newPassword);
        Task<List<UserDto>> SearchUsersAsync(string searchTerm);
        string GenerateJwtToken(User user);
        Task<User?> ValidateTokenAsync(string token);
        Task UpdateUserOnlineStatusAsync(int userId, bool isOnline);
    }
}
